import request, { PageQuery, PageResponse } from './request';

// 菜单实体
export interface SysMenu {
  id: number;
  parentId: number;
  menuName: string;
  menuPath: string;
  menuIcon?: string;
  menuType: number; // 1-目录 2-菜单 3-按钮
  permission?: string; // 权限标识
  component?: string; // 组件路径
  isFrame?: number; // 是否外链 0-否 1-是
  isCache?: number; // 是否缓存 0-不缓存 1-缓存
  visible?: number; // 是否可见 0-隐藏 1-显示
  sortOrder: number;
  status: number; // 0-禁用 1-启用
  createTime?: string;
  updateTime?: string;
  children?: SysMenu[];
}

// 菜单管理API
export const menuApi = {
  // 获取菜单树
  getMenuTree: () => request.get<SysMenu[]>('/system/menus/tree'),
  
  // 获取菜单列表
  getMenuList: () => request.get<SysMenu[]>('/system/menus/list'),
  
  // 根据ID获取菜单
  getMenuById: (id: number) => request.get<SysMenu>(`/system/menus/${id}`),
  
  // 创建菜单
  createMenu: (menu: Partial<SysMenu>) => request.post<SysMenu>('/system/menus', menu),
  
  // 更新菜单
  updateMenu: (id: number, menu: Partial<SysMenu>) => request.put<SysMenu>(`/system/menus/${id}`, menu),
  
  // 删除菜单
  deleteMenu: (id: number) => request.delete(`/system/menus/${id}`),
  
  // 获取用户菜单树
  getUserMenuTree: (userId: number) => request.get<SysMenu[]>(`/system/menus/user/${userId}`),
  
  // 获取菜单选项（用于下拉选择）
  getMenuOptions: () => request.get<SysMenu[]>('/system/menus/options'),
  
  // 批量更新菜单状态
  updateMenuStatus: (menuIds: number[], status: number) => 
    request.put('/system/menus/status', null, { params: { status }, data: menuIds })
};